java Hibernate标准,在某些情况下与所有内容匹配
有可能做像这样的事情吗
criteria.add(Expression.eq("product", " * "))
让它匹配所有东西
如果您得到一个可以有许多值的变量和一个与所有值匹配的特殊值“all”,这将非常方便。因此,您可以调用这样的方法,如果变量的值为“all”,那么表达式将匹配所有内容
public void someFunction(String variable) {
criteria.add(Expression.eq("product", variable))
}
编辑:如果我有两个选择字段,其中包含源语言&;目标语言和一个表,该表列出了它所包含的基于哪种语言组合的条目,以及IF语句(DynamicQuery是标准的抽象)
private DynamicQuery addCriteria(DynamicQuery dq, String languageFrom, String languageTo){
if (null != languageFrom && !languageFrom.isEmpty() && null != languageTo && !languageTo.isEmpty()){
if(languageFrom.equals("All") && languageTo.equals("All")) {
return dq;
} else if (!languageFrom.equals("All") && !languageTo.equals("All")) {
dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFrom));
dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageTo));
return dq;
} else if (languageFrom.equals("All") && !languageTo.equals("All")) {
dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageTo));
return dq;
} else if (!languageFrom.equals("All") && languageTo.equals("All")) {
dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFrom));
return dq;
}
}
}
这太恶心了,想想还有一块地,甚至更恶心。一个简单地必须涵盖所有可能发生的组合。。。这就是为什么我想要像REGEX这样的东西,因为我会给变量赋值reqex“*”值,然后我会像这样加两行
dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFromVariable));
dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageToVariable));
# 1 楼答案
如果您仅在选择它时才需要它。您可能需要添加if语句,以便仅在需要时添加条件
编辑1:
如果要将方法用于多个字段,则可以定义该方法。甚至你可以在这里定义不同的标准。易于维护(如所有人使用的和中心化的),代码重用(在某一点上的更改将对所有人有效)